home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / YICN23.ZIP / UNITS / YAKPAL.CPP < prev    next >
C/C++ Source or Header  |  1992-11-22  |  2KB  |  70 lines

  1. //the yakPalette class; basically just an encapsulation of Themie's
  2. //xpal (raw) routines
  3. #include "yakPal.h"
  4. #include "xlib.h"
  5. #include "xpal.h"
  6.  
  7. void yakPalette::load(char * filename, yakLib * myYakLib)
  8. {
  9.   if(myYakLib)
  10.   {
  11.     byte * myTempData = myYakLib->loadToMem(filename);
  12.     memcpy(paletteData, myTempData, 256*3);
  13.     delete myTempData;
  14.   }
  15.   else
  16.   {
  17.     ifstream myInStream(filename);
  18.     myInStream.read(paletteData, 256*3);
  19.     myInStream.close();
  20.   }
  21. }
  22.  
  23. void yakPalette::save(char * filename)
  24. {
  25.     ofstream myOutStream(filename);
  26.     myOutStream.write(paletteData, 256*3);
  27.     myOutStream.close();
  28. }
  29.  
  30. void yakPalette::loadDM256(char * filename)
  31. {
  32.     ifstream myInStream(filename);
  33.     myInStream.seekg(19);
  34.     myInStream.read(paletteData, 256*3);
  35.     myInStream.close();
  36. }
  37.  
  38. void yakPalette::get(word startColor, word numColors)
  39. {
  40.   x_get_pal_raw(paletteData, numColors, startColor);
  41. }
  42.  
  43. void yakPalette::put(word startColor, word numColors)
  44. {
  45.   x_put_pal_raw(paletteData, (word)numColors, (word)startColor);
  46. }
  47.  
  48. void yakPalette::rotate(direction myDirection, word startColor, word numColors)
  49. {
  50.   x_rot_pal_raw(paletteData + 3*startColor, myDirection, numColors);
  51. }
  52.  
  53. void yakPalette::setColor(byte color, byte r, byte g, byte b)
  54. {
  55.   x_set_rgb(color, r, g, b);
  56. }
  57.  
  58. void yakPalette::fade(char intensity, word startColor, word numColors)
  59. {
  60.   int myTestColor;
  61.   byte * myBytePointer = paletteData + 3*startColor;
  62.   while(myBytePointer != (paletteData + 3*startColor + 3*numColors))
  63.   {
  64.     myTestColor = (int)*myBytePointer + intensity;
  65.     myTestColor = (myTestColor < 0) ? 0 : myTestColor;
  66.     myTestColor = (myTestColor > 255) ? 255 : myTestColor;
  67.     *myBytePointer = (byte)myTestColor;
  68.     ++myBytePointer;
  69.   }
  70. }